package com.fivefu.core.hik.dto.response;

import com.fivefu.base.common.utils.str.StrUtils;
import com.fivefu.core.hik.entity.DbHikCamera;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;

public class HikCameraPageV1Resp {

    /**
     * 海拔
     */
    private String altitude;

    /**
     * 	监控点唯一标识
     */
    private String cameraIndexCode;

    /**
     * 监控点名称
     */
    private String cameraName;

    /**
     * 监控点类型
     */
    private Integer cameraType;

    /**
     * 监控点类型说明
     */
    private String cameraTypeName;

    /**
     * 能力集，详见附录A.44 设备能力集
     */
    private String capabilitySet;

    /**
     * 能力集说明
     */
    private String capabilitySetName;

    /**
     * 智能分析能力集，扩展字段，暂不使用
     */
    private String intelligentSet;

    /**
     * 智能分析能力集说明，扩展字段，暂不使用
     */
    private String intelligentSetName;

    /**
     * 通道编号
     */
    private String channelNo;

    /**
     * 通道类型，附录A.5
     */
    private String channelType;

    /**
     * 通道类型说明
     */
    private String channelTypeName;

    /**
     * 创建时间，采用ISO8601标准，如2018-07-26T21:30:08+08:00 表示北京时间2018年7月26日21时30分08秒
     */
    private String createTime;

    /**
     * 所属编码设备唯一标识
     */
    private String encodeDevIndexCode;

    /**
     * 所属设备类型，扩展字段，暂不使用
     */
    private String encodeDevResourceType;

    /**
     * 所属设备类型说明，扩展字段，暂不使用
     */
    private String encodeDevResourceTypeName;

    /**
     * 监控点国标编号，即外码编号externalIndexCode
     */
    private String gbIndexCode;

    /**
     * 安装位置，详见附录附录A.81 安装位置
     */
    private String installLocation;

    /**
     * 键盘控制码
     */
    private String keyBoardCode;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 摄像机像素（1-普通像素，2-130万高清，3-200万高清，4-300万高清），扩展字段，暂不使用
     */
    private String pixel;

    /**
     * 云镜类型（1-全方位云台（带转动和变焦），2-只有变焦,不带转动，3-只有转动，不带变焦，4-无云台，无变焦），扩展字段，暂不使用
     */
    private String ptz;

    /**
     * 云镜类型说明，扩展字段，暂不使用
     */
    private String ptzName;

    /**
     * 云台控制(1-DVR，2-模拟矩阵，3-MU4000，4-NC600)，扩展字段，暂不使用
     */
    private String ptzController;

    /**
     * 云台控制说明，扩展字段，暂不使用
     */
    private String ptzControllerName;

    /**
     * 录像存储位置
     */
    private String recordLocation;

    /**
     * 录像存储位置说明
     */
    private String recordLocationName;

    /**
     * 所属区域唯一标识
     */
    private String regionIndexCode;

    /**
     * 在线状态（0-未知，1-在线，2-离线），扩展字段，暂不使用
     */
    private String status;

    /**
     * 状态说明
     */
    private String statusName;

    /**
     * 传输协议，参考附录A.40
     */
    private Integer transType;

    /**
     * 传输协议类型说明
     */
    private String transTypeName;

    /**
     * 接入协议，参考附录A.6
     */
    private String treatyType;

    /**
     * 接入协议类型说明
     */
    private String treatyTypeName;

    /**
     * 可视域相关（JSON格式），扩展字段，暂不使用
     */
    private String viewshed;

    /**
     * 更新时间，IOS8601格式，参考附录B ISO8601时间格式说明
     */
    private String updateTime;

    public String getAltitude() {
        return altitude;
    }

    public void setAltitude(String altitude) {
        this.altitude = altitude;
    }

    public String getCameraIndexCode() {
        return cameraIndexCode;
    }

    public void setCameraIndexCode(String cameraIndexCode) {
        this.cameraIndexCode = cameraIndexCode;
    }

    public String getCameraName() {
        return cameraName;
    }

    public void setCameraName(String cameraName) {
        this.cameraName = cameraName;
    }

    public Integer getCameraType() {
        return cameraType;
    }

    public void setCameraType(Integer cameraType) {
        this.cameraType = cameraType;
    }

    public String getCameraTypeName() {
        return cameraTypeName;
    }

    public void setCameraTypeName(String cameraTypeName) {
        this.cameraTypeName = cameraTypeName;
    }

    public String getCapabilitySet() {
        return capabilitySet;
    }

    public void setCapabilitySet(String capabilitySet) {
        this.capabilitySet = capabilitySet;
    }

    public String getCapabilitySetName() {
        return capabilitySetName;
    }

    public void setCapabilitySetName(String capabilitySetName) {
        this.capabilitySetName = capabilitySetName;
    }

    public String getIntelligentSet() {
        return intelligentSet;
    }

    public void setIntelligentSet(String intelligentSet) {
        this.intelligentSet = intelligentSet;
    }

    public String getIntelligentSetName() {
        return intelligentSetName;
    }

    public void setIntelligentSetName(String intelligentSetName) {
        this.intelligentSetName = intelligentSetName;
    }

    public String getChannelNo() {
        return channelNo;
    }

    public void setChannelNo(String channelNo) {
        this.channelNo = channelNo;
    }

    public String getChannelType() {
        return channelType;
    }

    public void setChannelType(String channelType) {
        this.channelType = channelType;
    }

    public String getChannelTypeName() {
        return channelTypeName;
    }

    public void setChannelTypeName(String channelTypeName) {
        this.channelTypeName = channelTypeName;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getEncodeDevIndexCode() {
        return encodeDevIndexCode;
    }

    public void setEncodeDevIndexCode(String encodeDevIndexCode) {
        this.encodeDevIndexCode = encodeDevIndexCode;
    }

    public String getEncodeDevResourceType() {
        return encodeDevResourceType;
    }

    public void setEncodeDevResourceType(String encodeDevResourceType) {
        this.encodeDevResourceType = encodeDevResourceType;
    }

    public String getEncodeDevResourceTypeName() {
        return encodeDevResourceTypeName;
    }

    public void setEncodeDevResourceTypeName(String encodeDevResourceTypeName) {
        this.encodeDevResourceTypeName = encodeDevResourceTypeName;
    }

    public String getGbIndexCode() {
        return gbIndexCode;
    }

    public void setGbIndexCode(String gbIndexCode) {
        this.gbIndexCode = gbIndexCode;
    }

    public String getInstallLocation() {
        return installLocation;
    }

    public void setInstallLocation(String installLocation) {
        this.installLocation = installLocation;
    }

    public String getKeyBoardCode() {
        return keyBoardCode;
    }

    public void setKeyBoardCode(String keyBoardCode) {
        this.keyBoardCode = keyBoardCode;
    }

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public String getPixel() {
        return pixel;
    }

    public void setPixel(String pixel) {
        this.pixel = pixel;
    }

    public String getPtz() {
        return ptz;
    }

    public void setPtz(String ptz) {
        this.ptz = ptz;
    }

    public String getPtzName() {
        return ptzName;
    }

    public void setPtzName(String ptzName) {
        this.ptzName = ptzName;
    }

    public String getPtzController() {
        return ptzController;
    }

    public void setPtzController(String ptzController) {
        this.ptzController = ptzController;
    }

    public String getPtzControllerName() {
        return ptzControllerName;
    }

    public void setPtzControllerName(String ptzControllerName) {
        this.ptzControllerName = ptzControllerName;
    }

    public String getRecordLocation() {
        return recordLocation;
    }

    public void setRecordLocation(String recordLocation) {
        this.recordLocation = recordLocation;
    }

    public String getRecordLocationName() {
        return recordLocationName;
    }

    public void setRecordLocationName(String recordLocationName) {
        this.recordLocationName = recordLocationName;
    }

    public String getRegionIndexCode() {
        return regionIndexCode;
    }

    public void setRegionIndexCode(String regionIndexCode) {
        this.regionIndexCode = regionIndexCode;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusName() {
        return statusName;
    }

    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }

    public Integer getTransType() {
        return transType;
    }

    public void setTransType(Integer transType) {
        this.transType = transType;
    }

    public String getTransTypeName() {
        return transTypeName;
    }

    public void setTransTypeName(String transTypeName) {
        this.transTypeName = transTypeName;
    }

    public String getTreatyType() {
        return treatyType;
    }

    public void setTreatyType(String treatyType) {
        this.treatyType = treatyType;
    }

    public String getTreatyTypeName() {
        return treatyTypeName;
    }

    public void setTreatyTypeName(String treatyTypeName) {
        this.treatyTypeName = treatyTypeName;
    }

    public String getViewshed() {
        return viewshed;
    }

    public void setViewshed(String viewshed) {
        this.viewshed = viewshed;
    }

    public String getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }

    public DbHikCamera replaceDbHikCamera(){
        DbHikCamera camera = new DbHikCamera();
        camera.setElevation(this.altitude);//海拔
        camera.setCameraIndexCode(this.cameraIndexCode);//监控点唯一标识
        camera.setCameraName(this.cameraName);//监控点名称
        camera.setCameraType(this.cameraType == null ? "" : this.cameraType + "");//监控点类型
        camera.setCapability(this.capabilitySet);//能力集，详见附录A.44 设备能力集
        camera.setIntelligentSet(this.intelligentSet);//智能分析能力集，扩展字段，暂不使用
        camera.setChannelNo(this.channelNo);//通道编号
        camera.setChannelType(this.channelType);//通道类型，附录A.5
        camera.setCreateTime(this.createTime);//创建时间，采用ISO8601标准，如2018-07-26T21:30:08+08:00 表示北京时间2018年7月26日21时30分08秒
        camera.setEncodeDevIndexCode(this.encodeDevIndexCode);//所属编码设备唯一标识
        camera.setEncodeDevResourceType(this.encodeDevResourceType);//所属设备类型，扩展字段，暂不使用
        camera.setGbIndexCode(this.gbIndexCode);//监控点国标编号，即外码编号externalIndexCode
        camera.setInstallLocation(this.installLocation);//安装位置，详见附录附录A.81 安装位置
        camera.setKeyBoardCode(this.keyBoardCode);//键盘控制码
        if (StrUtils.isNotNull(latitude) && StringUtils.isNumeric(latitude)) {
            BigDecimal latitude = BigDecimal.valueOf(Double.valueOf(this.latitude));
            camera.setLatitude(latitude);//纬度，精确到小数点后8位
        }
        if (StrUtils.isNotNull(longitude) && StringUtils.isNumeric(longitude)) {
            BigDecimal longitude = BigDecimal.valueOf(Double.valueOf(this.longitude));
            camera.setLongitude(longitude);//经度，精确到小数点后8位
        }
        camera.setPixel(this.pixel);//摄像机像素（1-普通像素，2-130万高清，3-200万高清，4-300万高清），扩展字段，暂不使用
        camera.setPtz(this.ptz);//云镜类型（1-全方位云台（带转动和变焦），2-只有变焦,不带转动，3-只有转动，不带变焦，4-无云台，无变焦），扩展字段，暂不使用
        camera.setPtzController(this.ptzController);//云台控制(1-DVR，2-模拟矩阵，3-MU4000，4-NC600)，扩展字段，暂不使用
        camera.setRecordLocation(this.recordLocation);//录像存储位置
        camera.setRegionIndexCode(this.regionIndexCode);//所属区域唯一标识
        camera.setOnlineStatus(StrUtils.isNotNull(this.status) ? Integer.parseInt(this.status) : 0);//在线状态（0-未知，1-在线，2-离线），扩展字段，暂不使用
        camera.setTransType(this.transType == null ? "" : this.transType + "");//传输协议，参考附录A.40
        camera.setTreatyType(this.treatyType);//接入协议，参考附录A.6
        camera.setViewshed(this.viewshed);//可视域相关（JSON格式），扩展字段，暂不使用
        camera.setUpdateTime(this.updateTime);//更新时间，IOS8601格式，参考附录B ISO8601时间格式说明
        return camera;
    }


}
